A typical computing system includes one or more processors with one or more processing cores to execute instructions. Multiple processing cores can enable concurrent execution of instructions on multiple software threads. In order to maintain integrity in a computing system supporting multiple software threads, the system typically uses locks to control access to shared system resources. A lock is a mechanism for controlling access by multiple threads of execution to a shared resource. In one embodiment, a lock is a variable that is accessible by multiple threads of execution, and which holds the state of the lock at any given instant in time to indicate whether the lock, and thus the shared resource controlled using the lock, is available at a given time. A system can use locks to ensure that multiple threads are not attempting to modify the same locations on a storage device simultaneously. However, the use of locks can have drawbacks. Locks can impact system performance by requiring threads to wait to acquire a lock prior to performing some operations, which prevents linear scaling of performance with additional CPU cores.
Descriptions of certain details and implementations follow, including a description of the figures, which may depict some or all of the embodiments described below, as well as discussing other potential embodiments or implementations of the inventive concepts presented herein.